javascript basis

  • js 的基础语法、变量、常量、数据类型

变量引用问题#

  • 多个变量引用指向同一个对象,通过一个变量修改对象内部数据,其他引用都被改变
var obj1 = { name: "tom" };
var obj2 = obj1;
console.log(obj1 == obj2) / 同一个对象;
obj2.age = 12;
//可以获取到对象的值 修改了obj1的值
console.log(obj1.age); //12

try catch 异常处理#

try {
let tmp = undefined;
console.log(tmp.a); // 没有 tmp.a 抛出异常
} catch (error) {
console.error(error);
}
console.log("--test--");

数组#

//创建方式
var arr1 = [1, 2, 3];
console.log(arr1);
var arr2 = new Array(1, 2, 3);
console.log(arr2);
var arr3 = Array(1, 2, 3);
console.log(arr3);
var arr4 = Array.of(1, 2, 3);
console.log(arr4);
//单个注意点
var arrSingle = Array(3);
console.log(arrSingle); // 长度为3的空数组
var arrSingle2 = new Array(3);
console.log(arrSingle2); // 长度为3的空数组
var arrSingle3 = Array.of(3);
console.log(arrSingle3); //一个值 [3]
var arrSingle4 = [3];
console.log(arrSingle4); //一个值 [3]
//访问数据
console.log(arr1.length); //数组长度
//访问数组值
console.log(arr1[0]);
console.log(arr1[3]); //超过数组的长度 返回 undefined
遍历数组#
//遍历数组
var ay = [1, 2, 3, 4, 5];
for (let ar of ay) {
console.log(ar);
}
for (let ar in ay) {
console.log(ar);
}
// e 遍历的值 i 下标索引 arr:数组本身 =ay
ay.forEach((e, i, arr) => {
console.log(e, i, arr);
});
添加删除元素#
// 添加元素
arr1[3] = 4;
console.log(arr1);
//删除元素
var arr = [1, 2, 3];
arr.length = 2; //缩小长度
console.log(arr);
arr.length = 0; //清空
console.log(arr);
var ay = [1, 2, 3, 4, 5];
// ay.splice(1, 1) // 把数组的下标为1的值删除掉
// console.log(ay)
// ay.splice(1, 1, 'a') //把数组的下标为1的值替换为 'a'
ay.splice(1, 0, "bb"); //把数组的下标为1的值添加为 'bb'
console.log(ay);
栈 队列#
//栈 数组原生支持
var stack = [1, 2, 3, 4];
stack.push(5, 6, 7);
console.log(stack);
var p = stack.pop(2);
console.log(p);
console.log(stack);
//队列 数组原生支持
var queue = [1, 2, 3, 4];
queue.push(5, 6, 7);
console.log(queue);
var q = queue.shift();
console.log(q);
console.log(queue);
var q1 = queue.unshift("a", "b");
console.log(q1);
console.log(queue);
反转#
//反转数组
var test007 = [1, 2, 3, 4, 5];
test007.reverse();
console.log(test007);
// 字符串反转
console.log("hello".split("").reverse().join(""));
数组排序#
//排序
var test01 = [1, 5, 4, 3];
test01.sort();
console.log(test01);
//反序
test01.sort((a, b) => b - a);
console.log(test01);
数组链接#
//数组链接
var test = [1, 2, 3];
var test1 = [5, 6, 7];
console.log(test1.concat(test));
数组切片#
//数组切片 slice 第一个参数:下标开始位置,第二个参数:裁剪长度-1
var test = [1, 2, 3, 4];
console.log(test.slice(1, 2));
数组的 map 操作#
var test = [1, 2, 3, 4];
//将数组的每个元素+1
var testMap = test.map((element) => element + 1);
console.log(test);
console.log(testMap);
数组 reduce#
// 两个值相加后作为参数与下一个元素进行相加
var test = [1, 2, 3, 4];
var reduce = test.reduce((v1, v2) => {
return v1 + v2;
}, 0);
console.log(reduce);
数组过滤#
var test = [1, 2, 3, 4];
var filter = test.filter((item) => item > 2);
console.log(filter);
数组测试#
//数组测试 true false 查看元素是否都大于2
var test = [1, 2, 3, 4];
var every = test.every((item) => item > 2);
console.log(every);
destructuring 解构操作#
//destructuring 解构操作
var test = [1, 2, 3];
var [a, b, c] = test;
console.log(a, b, c);
var [, f, e] = test;
console.log(f, e);
function test1() {
let name = "dfx";
let position = "前端实践者";
return [name, position];
}
var [name, position] = test1();
console.log(name, position);
rest 操作#
// rest
function test(...rest) {
console.log(rest);
}
// var test2 = [1, 2, 3];
test(1, 2, 3, 4);